package com.myblockchain.service;

import javax.websocket.Session;
import java.util.List;

/**
 * @author Liu
 */
public interface P2PService {
    /**
     * 新增客户端
     * @param session
     */
    void addClient(Session session);

    /**
     * 删除客户端
     * @param session
     */
    void removeClient(Session session);

    /**
     * 处理p2p消息
     * @param session 发送方session
     * @param msg 消息内容
     */
    void handleMessage(Session session, String msg);

    /**
     * 发送消息
     * @param session 接收者
     * @param msg 消息内容
     */
    void sendMsg(Session session, String msg);

    /**
     * 广播消息
     * @param msg 消息内容
     */
    void broadcast(String msg);

    /**
     * 查询打包的交易信息
     * @return
     */
    String queryPackedTransactionMsg();

    /**
     * 查询最后一个区块信息
     * @return
     */
    String queryLatestBlockMsg();

    /**
     * 查询交易池信息
     * @return
     */
    String queryTransactionMsg();

    /**
     * 查询钱包信息
     * @return
     */
    String queryWalletMsg();

    /**
     * 广播新产生的钱包信息
     * @param msg
     */
    void broadcastNewWallet(String msg);

    /**
     * 广播新产生的交易信息
     * @param msg
     */
    void broadcastNewTransaction(String msg);

    /**
     * 广播新产生的区块
     * @param msg
     */
    void broadcastNewBlock(String msg);

}
